/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.comandos.admin;

import br.ufc.quixada.adrs.interfaces.Comando;
import br.ufc.quixada.adrs.model.Adrs;
import br.ufc.quixada.adrs.model.Produtor;
import br.ufc.quixada.adrs.service.AdrsService;
import br.ufc.quixada.adrs.service.ProdutorService;
import br.ufc.quixada.adrs.util.Msg;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author ismaily
 */
public class CmdVincularProdutor implements Comando {

    public String executa(HttpServletRequest request, HttpServletResponse response) {
        HttpSession session = request.getSession(true);
        Adrs adrs = (Adrs) session.getAttribute("adrsProdutor");
        ProdutorService ps = new ProdutorService();
        Produtor prod = ps.getProdutorById(Long.parseLong(request.getParameter("id")));
        List<Produtor> prods = ps.getProdutoresByAdrsId(adrs.getId());
        for (Produtor p : prods) {
            if (p.getId().equals(prod.getId())) {
                session.setAttribute("erro", Msg.PRODUTOR_ALREADY_LINKED);
                return "/admin/admin_add_produtor_adrs.jsp";
            }
        }

        if (ps.vincularAdrs(prod, adrs)) {
            session.setAttribute("sucesso", Msg.PRODUTOR_SUCCESSFULLY_LINKED);
            adrs.setProdutores(ps.getProdutoresByAdrsId(adrs.getId()));
            for (Produtor p : adrs.getProdutores()) {
                p.setAdrs(adrs);
            }
            session.setAttribute("listaAdrs", new AdrsService().getAllAdrs());
        } else {
            session.setAttribute("erro", Msg.OPERATIONAL_ERROR_LINKING_PRODUTOR);
        }
        return "/admin/admin_add_produtor_adrs.jsp";
    }
}
